#NoTrayIcon
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_icon=chargeur.ico
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_Res_Language=1036
#AutoIt3Wrapper_Run_Obfuscator=y
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
Dim $szDrive, $szDir, $szFName, $szExt

#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiStatusBar.au3>
#include <GUIListView.au3>
#include <ListViewConstants.au3>
#include <ProgressConstants.au3>
#include <StaticConstants.au3>
#include <TabConstants.au3>
#include <WindowsConstants.au3>
#include <misc.au3>
#include <File.au3>
#include <Date.au3>
#include "ModernMenuRaw.au3"
#include <Bassmod.au3>
#include <7zip.au3>
_Bassmod_Init()
$version="Chargeur v 4.0 by ghost911 SStyle"
$pathdat=@ScriptDir&"\dat\"
$defaultpassword = "0x726F677549689EBCDABB781F88501F5D6265202569"
$config=@ScriptDir&"\config.ini"
$section="Option"

Global $urlDL,$NameDL,$telecharger,$StopFlag,$cheminDl
$urlDl=""
$NameDl=""
$telecharger=0
$StopFlag=0
$cheminDl=""

If _Singleton("726F677261675737420626520256983", 1) = 0 Then
MsgBox(48,$version, $version&" est dj en cours d'excution !")
Exit
EndIf

Opt("GUIOnEventMode", 1)
#Region ### START Koda GUI section ### Form=c:\users\ghost911\desktop\nouveau dossier\chargeur v 4.kxf
$Form1_1 = GUICreate("Chargeur v 4.0 by ghost911 SStyle", 426, 520,-1, -1)
$StatusBar1 = _GUICtrlStatusBar_Create($Form1_1)
$Tab1 = GUICtrlCreateTab(0, 0, 425, 497)
GUICtrlSetResizing(-1, $GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
$TabSheet1 = GUICtrlCreateTabItem("Telechargements :")
$Group1 = GUICtrlCreateGroup("Menu : ", 8, 24, 409, 89)
$telechargement = GUICtrlCreateButton("", 16, 40, 64, 64, BitOR($BS_CHECKBOX,$BS_AUTOCHECKBOX,$BS_PUSHLIKE+$BS_ICON,$WS_TABSTOP))
GUICtrlSetImage(-1,@ScriptDir&"\icone\1.ico",1,1)
GUICtrlSetTip (-1, "Tlchargement")
$stop = GUICtrlCreateButton("", 96, 40, 64, 64, BitOR($BS_CHECKBOX,$BS_AUTOCHECKBOX,$BS_PUSHLIKE+$BS_ICON,$WS_TABSTOP))
GUICtrlSetImage(-1,@ScriptDir&"\icone\2.ico",1,1)
GUICtrlSetTip (-1, "Arrter le telechargement")
$rafraichir = GUICtrlCreateButton("", 176, 40, 64, 64, BitOR($BS_CHECKBOX,$BS_AUTOCHECKBOX,$BS_PUSHLIKE+$BS_ICON,$WS_TABSTOP))
GUICtrlSetImage(-1,@ScriptDir&"\icone\3.ico",1,1)
GUICtrlSetTip (-1, "Rafrachir")
$compression = GUICtrlCreateCheckbox("", 344, 40, 64, 64, BitOR($BS_CHECKBOX,$BS_AUTOCHECKBOX,$BS_PUSHLIKE+$BS_ICON,$WS_TABSTOP))
GUICtrlSetImage(-1,@ScriptDir&"\icone\4.ico")
GUICtrlSetTip (-1, "Dcompression automatique d'une archive aprs telechargement")
$info = GUICtrlCreateButton("", 260, 40, 64, 64, BitOR($BS_CHECKBOX,$BS_AUTOCHECKBOX,$BS_PUSHLIKE+$BS_ICON,$WS_TABSTOP))
GUICtrlSetImage(-1,@ScriptDir&"\icone\5.ico",1,1)
GUICtrlSetTip (-1, " propos ...")
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group2 = GUICtrlCreateGroup(" Pourcentage : 0 %", 8, 448, 409, 41)
$Progress2 = GUICtrlCreateProgress(13, 465, 398, 17, $PBS_SMOOTH)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$ListView1 = GUICtrlCreateListView("Fichier(s) de telechargement(s)|taille :|Date de cration :", 8, 120, 410, 326)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 200)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 70)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 2, 150)
$TabSheet2 = GUICtrlCreateTabItem("Options : ")
$Group3 = GUICtrlCreateGroup("Crer un fichier de tlchargement : ", 8, 24, 409, 193)
$Group4 = GUICtrlCreateGroup("Url : ", 11, 112, 393, 41)
$url = GUICtrlCreateInput("", 16, 128, 377, 21)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group5 = GUICtrlCreateGroup("Nom du fichier a tlcharger  : ", 11, 162, 393, 41)
$Name = GUICtrlCreateInput("", 16, 176, 377, 21)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$creer = GUICtrlCreateButton("",13, 44, 64, 64, BitOR($BS_CHECKBOX,$BS_AUTOCHECKBOX,$BS_PUSHLIKE+$BS_ICON,$WS_TABSTOP))
GUICtrlSetImage(-1,@ScriptDir&"\icone\7.ico",1,1)
GUICtrlSetTip (-1, "Crer un fichier de tlchargement")
$Autocompl = GUICtrlCreateCheckbox("",85, 44, 64, 64, BitOR($BS_CHECKBOX,$BS_AUTOCHECKBOX,$BS_PUSHLIKE+$BS_ICON,$WS_TABSTOP))
GUICtrlSetImage(-1,@ScriptDir&"\icone\6.ico")
GUICtrlSetTip (-1, "Auto-compltion")
$Coller = GUICtrlCreateButton("", 160, 44, 64, 64, BitOR($BS_CHECKBOX,$BS_AUTOCHECKBOX,$BS_PUSHLIKE+$BS_ICON,$WS_TABSTOP))
GUICtrlSetImage(-1,@ScriptDir&"\icone\8.ico",1,1)
GUICtrlSetTip (-1, "Coller")
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUICtrlCreateTabItem("")
$menu = GUICtrlCreateContextMenu($ListView1)
_GUICtrlCreateODMenuItem("", $menu)
_GUICtrlCreateODMenuItem("Supprimer le fichier de tlchargement", $Menu,@ScriptDir&"\icone\9.ico")
GUICtrlSetOnEvent(-1, "delete")
_GUICtrlCreateODMenuItem("", $menu)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

GUICtrlSetOnEvent($Autocompl,"auto")
GUICtrlSetOnEvent($telechargement,"Telechargement")
GUICtrlSetOnEvent($info,"info")
GUICtrlSetOnEvent($stop,"stop")
GUICtrlSetOnEvent($compression,"compression")
GUICtrlSetOnEvent($rafraichir,"Rafraichir")
GUICtrlSetOnEvent($creer,"creer")
GUICtrlSetOnEvent($Coller,"Coller")
GUISetOnEvent($GUI_EVENT_CLOSE, "Guiclosed")
GUISetOnEvent($GUI_EVENT_MINIMIZE, "GuiMinimize")
ListPath ($pathdat&"*.dat")
Option ()
_GUICtrlStatusBar_SetText($StatusBar1,"Bienvenue sur "&$version&" !")

While 1
If $telecharger == 1 Then
$hDownload = InetGet($urlDl,$cheminDl,1, 1)
$StopFlag=0
Do
If $StopFlag == 1 Then
	_GUICtrlStatusBar_SetText($StatusBar1,"Tlchargement annuler !")
	$telecharger=0
	$StopFlag=0
	GUICtrlSetData ($Progress2,0)
	GUICtrlSetData ($group2," Pourcentage : 0 %")
	ExitLoop
Else
$aData = InetGetInfo($hDownload)
$pcs = $aData  [0] * 100 / $aData[1]
$percent=StringLeft(StringReplace(split ($pcs,1),".",""),2)
GUICtrlSetData($Group2,"Pourcentage : "&split ($pcs,0)&"."&$percent&" % ")
_GUICtrlStatusBar_SetText($StatusBar1,"tlchargement : "&split ($pcs,0)&"."&$percent&" % "&" ( "&$aData  [0]&" / "&$aData[1]&" )")
GUICtrlSetData ($Progress2,split ($pcs,0))
Sleep(100)
EndIf
Until InetGetInfo($hDownload, 2)
Local $nBytes = InetGetInfo($hDownload, 0)
InetClose($hDownload)
GUICtrlSetData($Group2,"Pourcentage : 100.00 % ")
_GUICtrlStatusBar_SetText($StatusBar1,"tlchargement : 100.00 %"&" ( "&$aData  [0]&" / "&$aData[1]&" )")
MsgBox(64,$version,"Tlchargement termin : "&@CRLF&"Chemin : "&$cheminDl)
_GUICtrlStatusBar_SetText($StatusBar1,"Tlchargement termin !")
If GUICtrlRead ($compression) == 1 Then
If _7ZipCheckArchive($cheminDl) == 1 Then
$modif=	split ($cheminDl,0)
$modif2=StringReplace ($cheminDl,split ($cheminDl,0)&split ($cheminDl,1),"")
DirCreate ($modif2&$modif&"\")
$extraction=_7ZIPExtract(0,$cheminDl,$modif2&$modif&"\")
If @error = 0 Then
	MsgBox(64,$version,"Extraction russie :"&$modif2&$modif&"\")
	_GUICtrlStatusBar_SetText($StatusBar1,"Extraction russie !")
Else
	MsgBox(36,$version, "Echec de l'extraction :( !")
	_GUICtrlStatusBar_SetText($StatusBar1,"Echec de l'extraction :( !")
EndIf

EndIf
EndIf
$telecharger=0
EndIf
Sleep (10)
WEnd

Func info ()
_BASSMOD_MusicSetPosition(1)
_BASSMOD_MusicLoad(@ScriptDir & "\music.xm", BitOR($BASS_MUSIC_SURROUND, $BASS_MUSIC_LOOP, $BASS_MUSIC_CALCLEN))
_BASSMOD_MusicPlay()
MsgBox(64,"","Logiciel : "&$version&@CRLF&"Codeur : Ghost911"&@CRLF&"Adresse Hotmail : krim33300@live.fr"&@CRLF&"SiteWeb : http://genetique.jimdo.com/")
_BassMod_MusicStop()
EndFunc

Func Auto ()
	OptionWrite ("Auto",GUICtrlRead ($Autocompl))
EndFunc

Func compression ()
	OptionWrite ("Compression",GUICtrlRead ($compression))
EndFunc

Func Stop ()
	$StopFlag=1
EndFunc

Func Option ()

$Option1 = IniRead($config, "Option","compression", "1")
If  $Option1 == 1 Then
GUICtrlSetState($compression,$GUI_CHECKED)
EndIf

$Option2 = IniRead($config, "Option","Auto", "1")
If  $Option2 == 1 Then
GUICtrlSetState($Autocompl,$GUI_CHECKED)
EndIf

EndFunc

Func Telechargement ()
$Selectionner =_GUICtrlListView_GetSelectedIndices(GUICtrlGetHandle($ListView1),True)
If $Selectionner [0] > 0 Then
$Fichier=_GUICtrlListView_GetItemText(GUICtrlGetHandle($ListView1), $Selectionner [1], 0)
$LectureUrl=ReadFormatDat ($pathdat&$fichier,1)
$LectureName=ReadFormatDat ($pathdat&$fichier,2)
If $LectureUrl == 1 Then
$urlDl=""
Else
$urlDl=$LectureUrl
EndIf

If $LectureName == 1 Then
$NameDl=""
Else
$NameDl=$LectureName
EndIf

if $urlDl <> "" Then
	if $NameDl <> "" Then
		$extension=StringReplace(split ($urlDL,1),".","")
$var = FileSaveDialog( "Choisir le nom de votre fichier !",@ScriptDir&"\", StringUpper ($extension)& "(*."&$extension&")", 2,$NameDL&"."&$extension)
If @error Then

Else
	$cheminDl=$var
    $telecharger=1
EndIf

	Else
		EndIf
Else
	EndIf

Else
_GUICtrlStatusBar_SetText($StatusBar1,"Veuillez choisir un fichier svp .....")
MsgBox (48,$version,"Veuillez choisir un fichier svp .....")
EndIf
EndFunc

Func Rafraichir ()
	ListPath ($pathdat&"*.dat")
EndFunc

Func delete ()
$Selectionner =_GUICtrlListView_GetSelectedIndices(GUICtrlGetHandle($ListView1),True)
If $Selectionner [0] > 0 Then
$Fichier=_GUICtrlListView_GetItemText(GUICtrlGetHandle($ListView1), $Selectionner [1], 0)
If FileDelete ($pathdat&$fichier) == 0 Then
_GUICtrlStatusBar_SetText($StatusBar1,$version&" n'a pas pu supprimer le fichier : "&$Fichier)
MsgBox (64,$version,$version&" n'a pas pu supprimer le fichier : "&$Fichier)
Else
ListPath ($pathdat&"*.dat")
_GUICtrlStatusBar_SetText($StatusBar1,"le fichier a t supprim avec succs : "&$Fichier)
MsgBox (64,$version,"le fichier a t supprim avec succs : "&$Fichier)
EndIf
Else
_GUICtrlStatusBar_SetText($StatusBar1,"Veuillez choisir un fichier svp .....")
MsgBox (48,$version,"Veuillez choisir un fichier svp .....")
EndIf

EndFunc

Func creer ()
If GUICtrlRead ($url) <> "" Then

If GUICtrlRead ($Name) <> "" Then

If IsFileExiste ($pathdat&GUICtrlRead($Name)&".dat") == 1 Then

If CreateFormatDat ($pathdat&GUICtrlRead($Name)&".dat",GUICtrlRead($url),GUICtrlRead($Name)) == 1 Then
Else
ListPath ($pathdat&"*.dat")
_GUICtrlStatusBar_SetText($StatusBar1,"Fichier de tlchargement crer avec succs !")
MsgBox(64,"Creation d'un fichier de tlchargement","Fichier de tlchargement crer avec succs !")
EndIf

	Else

If Not IsDeclared("iMsgBoxAnswer") Then Local $iMsgBoxAnswer
$iMsgBoxAnswer = MsgBox(36,"","Le fichier existe dj voulez-vous l'craser ?")
Select
	Case $iMsgBoxAnswer = 6 ;Yes

If CreateFormatDat ($pathdat&GUICtrlRead($Name)&".dat",GUICtrlRead($url),GUICtrlRead($Name)) == 1 Then
Else
ListPath ($pathdat&"*.dat")
_GUICtrlStatusBar_SetText($StatusBar1,"Fichier de tlchargement crer avec succs !")
MsgBox(64,"Creation d'un fichier de tlchargement","Fichier de tlchargement crer avec succs !")
EndIf

	Case $iMsgBoxAnswer = 7 ;No

EndSelect

EndIf

	Else
_GUICtrlStatusBar_SetText($StatusBar1,"Entrer un nom de fichier !")
MsgBox(48,"Creation d'un fichier de tlchargement","Entrer un nom de fichier !")
	EndIf

Else
_GUICtrlStatusBar_SetText($StatusBar1,"Entrer une URL !")
MsgBox(48,"Creation d'un fichier de tlchargement","Entrer une URL !")
EndIf

EndFunc


Func Coller ()
GUICtrlSetData($url,ClipGet ())
If GUICtrlRead ($Autocompl) == 1 Then
	GUICtrlSetData ($Name,split (ClipGet (),0)&split (ClipGet (),1))
EndIf

EndFunc

Func OptionWrite ($Key,$value)
	$ini=IniWrite($config,$section,$Key,$value)
	If $ini == 0 Then
_GUICtrlStatusBar_SetText($StatusBar1,"Ecriture impossible ( Option )")
MsgBox(48,$version,"Ecriture impossible ( Option )")
	Else
		EndIf
EndFunc

Func ListPath ($path)
_GUICtrlListView_DeleteAllItems(GUICtrlGetHandle($ListView1))
$search = FileFindFirstFile($path)
If $search = -1 Then
    Return 1
Else
While 1
    $file = FileFindNextFile($search)
    If @error Then ExitLoop
$time =  FileGetTime($pathdat&$file,1)
GUICtrlCreateListViewItem($file &"|"& FileGetSize($pathdat&$file) &" bytes"&"|"&$time[0] & "/" & $time[1] & "/" & $time[2]&"  "&$time[3]&"H"&$time[4]&" min ", $ListView1)
WEnd
FileClose($search)
EndIf


EndFunc

Func IsFileExiste ($path)
If FileExists($path) Then
   Return 0
Else
   Return 1
EndIf
EndFunc

Func GuiMinimize ()
	GUISetState ($GUI_EVENT_MINIMIZE,$Form1_1)
EndFunc

Func Guiclosed ()
_BASSMOD_MusicFree()
_BASSMOD_Free()
Exit
EndFunc

Func Lecture ($monfichier,$mode)
$open = FileOpen ($monfichier,$mode)
If $open = -1 Then
    Return 1
Else
  $lecture = FileRead ($open)
  FileClose ($open)
Return $lecture
EndIf
EndFunc

Func Ecriture ($monfichier,$donnee,$mode)
	$open = FileOpen ($monfichier,$mode)
If $open = -1 Then
    Return 1
    Else
$lecture = FileWrite ($open,$donnee)
	FileClose ($open)
EndIf
EndFunc

Func CreateFormatDat ($path,$url,$Name)
$encryption=Crypter($url&","&$Name,$defaultpassword)
If Ecriture ($path,$encryption,2+16) == 1 Then
	FileDelete ($path)
	_GUICtrlStatusBar_SetText($StatusBar1,"Impossible de crer le fichier : "&$path)
MsgBox(48,$version,"Impossible de crer le fichier : "&$path)
Return 1
EndIf

EndFunc

Func ReadFormatDat ($path,$flag)
	$read=Lecture ($path,16)
	If $read == 1 Then
_GUICtrlStatusBar_SetText($StatusBar1,"Impossible de lire le fichier : "&$path)
MsgBox(48,$version,"Impossible de lire le fichier : "&$path)
Return 1
		Else
	$decryption=Crypter($read,$defaultpassword)
	$binarytostring=BinaryToString ($decryption)
	$split=StringSplit ($binarytostring,",",1)
	Return $split [$flag]
EndIf
EndFunc

Func Crypter($Data, $Key)
	Local $Opcode = "0xC81001006A006A005356578B551031C989C84989D7F2AE484829C88945F085C00F84DC000000B90001000088C82C0188840DEFFEFFFFE2F38365F4008365FC00817DFC000100007D478B45FC31D2F775F0920345100FB6008B4DFC0FB68C0DF0FEFFFF01C80345F425FF0000008945F48B75FC8A8435F0FEFFFF8B7DF486843DF0FEFFFF888435F0FEFFFFFF45FCEBB08D9DF0FEFFFF31FF89FA39550C76638B85ECFEFFFF4025FF0000008985ECFEFFFF89D80385ECFEFFFF0FB6000385E8FEFFFF25FF0000008985E8FEFFFF89DE03B5ECFEFFFF8A0689DF03BDE8FEFFFF860788060FB60E0FB60701C181E1FF0000008A840DF0FEFFFF8B750801D6300642EB985F5E5BC9C21000"
	Local $CodeBuffer = DllStructCreate("byte[" & BinaryLen($Opcode) & "]")
	DllStructSetData($CodeBuffer, 1, $Opcode)

	Local $Buffer = DllStructCreate("byte[" & BinaryLen($Data) & "]")
	DllStructSetData($Buffer, 1, $Data)

	DllCall("user32.dll", "none", "CallWindowProc", "ptr", DllStructGetPtr($CodeBuffer), _
													"ptr", DllStructGetPtr($Buffer), _
													"int", BinaryLen($Data), _
													"str", $Key, _
													"int", 0)
	Local $Ret = DllStructGetData($Buffer, 1)
	$Buffer = 0
	$CodeBuffer = 0
	Return $Ret
EndFunc

Func split ($rl,$p)
$Path = _PathSplit($rl, $szDrive, $szDir, $szFName, $szExt)
If $p == 0 Then
$nom = $Path[UBound($Path) - 2]
Return $nom
Else
$extension = $Path[UBound($Path) - 1]
Return $extension
EndIf
EndFunc


